1. Field of the Invention
The present invention relates in general to computers, and more particularly to a method, system, and computer program product for logging and identifying microcode errors in a computing environment.
2. Description of the Related Art
Computers, and accompanying computer processing in various implementations, are commonplace in today's society. Processing hardware, such as central processing units (CPUs) are found in a variety of settings. Microprogramming (i.e., writing microcode) is a method that may be employed to implement machine instructions for hardware such as a CPU relatively easily, often using less hardware than with other methods. Microcode provides a set of detailed and rudimentary lower-level routines that control and sequence the actions needed to execute particular instructions. In addition, the microcode may also control and sequence actions needed to decode the instructions.
CPU microcode is normally written by the CPU engineer during the design phase. It is generally not meant to be visible or changeable by a normal programmer, one of the reasons being that microcode (by design) can be dramatically changed with a new microarchitecture generation. Machine code often retains backwards compatibility. Microcode has often been used to let one microarchitecture emulate another, usually more powerful, architecture. In some cases, use of the term “microcode” may refer more generically to firmware closely associated with the control of other hardware devices, such as hard disk drives (HDDs).
In the development of microcode, developers across many code components typically use a common function to log errors. When a failure occurs, these Microcode Detected Errors (MDE) are intended to provide service people with an indication of what code component failed. In some computing environments, however, the number of registered errors in the common logging utility has not grown with the increase in code components. As a result, there is wide spread duplication in errors being logged by different components. In short, the error identifiers for an MDE no longer uniquely identify a code component, much less a particular position in microcode.